﻿using System.Collections.Generic;
using Cms.Domain.Wrappers;

namespace Cms.Domain.RepositoryInterfaces
{
    public interface IPageRepository
    {
        Page GetPage(int id);

        Page GetPageFromFrontEnd(int id);

        void SavePage(Page page);

        void SaveApplicationPage(ApplicationPage page);

        IList<Page> GetPages(int siteID, int folderID);

        void DeletePage(int id);

        void DeleteCategory(Category category);

        Category GetCategory(int id);

        bool CategoryExists(string name, int id, int siteID);

        void SaveCategory(Category category);

        IList<Page> ListPages(int categoryID, int skipFirstCount, int returnCount, ContentSortMode sortMode, SortDirection sortDirection);

        IList<SearchResultHit> Search(ref SearchContentFilter filter, int localeID, int searchOnlyInSearchOnlyInCategoryId, User user);

        IList<Page> GetMostVisitedPages(int currentSiteID);

        void SaveComment(Comment comment);

        Comment GetComment(int id);

        IList<Comment> GetComments();
    }
}